package com.css.openapi.BO;


import com.css.common.core.constant.ValidGroup;
import com.css.openapi.BO.fxdw.ZfpzxxBO;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;

/**
 * @description: PcOrderBO
 * @Title: PcOrderBO
 * @Author xlw
 * @Package com.invoice.tcc.BO
 * @Date 2024/12/27 14:19
 */
@Data
public class PcOrderBO {

    /**
     * 商户绑定编号
     */
    @NotBlank(message = "商户绑定编号不能为空")
    private String shbdbh;

    /**
     * 开票员绑定编号
     */
    //@NotBlank(message = "开票员绑定编号不能为空")
    private String kpybdbh;

    /**
     * 发票票种代码
     */
    @NotBlank(message = "发票票种代码不能为空")
    @Pattern(regexp = "^(01|02)$", message = "发票票种输入有误")
    private String fppzDm;

    /**
     * 业务流水号
     */
    @NotBlank(message = "业务流水号不能为空")
    private String ywlsh;

    /**
     * 支付开票确认方式
     */
    private String zfkpqrfs = "01";

    /**
     * 自然人姓名
     */
    @NotBlank(message = "自然人姓名不能为空")
    private String zrrxm;

    /**
     * 自然人身份证件号码
     */
    @NotBlank(message = "自然人身份证件号码不能为空")
    private String zrrsfzjhm;

    /**
     * 自然人收款银行预留手机号码
     */
    @NotBlank(message = "自然人收款银行预留手机号码不能为空")
    private String zrrsjhm;

    /**
     * 自然人收款银行账号
     */
    @NotBlank(message = "自然人收款银行账号不能为空")
    private String zrryhzh;

    /**
     * 自然人居住地址
     */
    @NotBlank(message = "自然人居住地址不能为空", groups = ValidGroup.LHYG.class)
    private String zrrjzdz;

    /**
     * 减按征税类型代码
     */
    private String jazslxDm;

    /**
     * 税费承担方
     */
    private String sfcdf = "01";

    /**
     * 个人所得税项目
     */
    @NotBlank(message = "个人所得税项目不能为空", groups = ValidGroup.LHYG.class)
    private String grsdsxm;

    /**
     * 发票备注
     */
    private String fpbz;

    /**
     * 开票通知回调地址
     */
    private String kptzhddz;

    /**
     * 支付通知回调地
     */
    private String zftzhddz;

    /**
     * 开户银行所在省份
     */
    private String khyhszsf;

    /**
     * 支付凭证
     */
    @Valid
    @NotNull(message = "支付凭证不能为空", groups = ValidGroup.MAOTAI.class)
    private ZfpzxxBO zfpzxx;

    /**
     * 订单明细
     */
    @NotEmpty(message = "批次订单不能为空")
    @Valid
    private List<PcOrderDetailBO> ywddmx;

}
